package main

import (
	"context"
	"git.900sui.cn/kc/base/utils"
	"git.900sui.cn/kc/kcgin"
	"git.900sui.cn/kc/kcgin/logs"
	"git.900sui.cn/kc/rpcinterface/client/order"
	"github.com/robfig/cron"
	"strconv"
	"time"
)

var Loc *time.Location

func init() {
	Loc, _ = time.LoadLocation("Local")
}

//系统自动确认消费限时卡包、限时限次卡包..
func autoConfirmConsumeHcardOrHNcard() {
	new(utils.KcLog).GetInstance(kcgin.AppConfig.String("crontab.log.autoConfirmConsumeHcardOrHNcard"))
	nowTime := time.Now().In(Loc)
	timeYMDInt, _ := strconv.Atoi(nowTime.Format("20060102"))
	rpcOrder := new(order.Consume).Init()
	defer rpcOrder.Close()
	ctx := context.Background()
	reply := false
	utils.Logerr.Printf("系统开始自动确认消费限时卡包、限时限次卡包，时间点：【%s】\n", nowTime.String())
	//系统自动确认消费限时限次卡包
	if err := rpcOrder.AutoConfirmHNCard(ctx, &timeYMDInt, &reply); err != nil {
		utils.Logerr.Printf("系统自动确认消费限时卡包任务失败，错误：%s\n", err.Error())
	}
	//系统自动确认消费限时卡包
	if err := rpcOrder.AutoConfirmHCard(ctx, &timeYMDInt, &reply); err != nil {
		utils.Logerr.Printf("系统自动确认消费限时卡包任务失败，错误：%s\n", err.Error())
	}
	utils.Logerr.Printf("系统结束自动确认消费限时卡包、限时限次卡包，时间点：【%s】\n", nowTime.String())
}

func main() {
	logs.Info("Environment Variable:MSF_ENV:", kcgin.KcConfig.RunMode)
	c := cron.New()
	//每天1点执行一次
	_ = c.AddFunc("0 0 1 * * ?", autoConfirmConsumeHcardOrHNcard)
	c.Start()
	select {}
}

//cron举例说明
//
//每隔5秒执行一次：*/5 * * * * ?
//
//每隔1分钟执行一次：0 */1 * * * ?
//
//每天23点执行一次：0 0 23 * * ?
//
//每天凌晨1点执行一次：0 0 1 * * ?
//
//每月1号凌晨1点执行一次：0 0 1 1 * ?
//
//在26分、29分、33分执行一次：0 26,29,33 * * * ?
//
//每天的0点、13点、18点、21点都执行一次：0 0 0,13,18,21 * * ?
